#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "matriz.h"


//verifica se uma lista está vazia
int isListaVazia(ListaMatriz L)
{
	return (L.Primeiro->prox == NULL);
}

//Inicializa uma lista encadeada
void criaListaVazia(ListaMatriz *L)
{
	L->Primeiro = (PMatriz)malloc(sizeof(Matriz));
	L->Ultimo = (PMatriz)malloc(sizeof(Matriz));
	L->Primeiro->prox = NULL;
	L->Ultimo->prox = NULL;
}

//inserte um Item Matriz na ultima posicao da lista
void inserirPonteiroMatriz(ListaMatriz *L, PMatriz a){
	if(isListaVazia(*L))
		L->Primeiro->prox = a;
	else
	{
		L->Ultimo->prox->prox = a;
	}
	L->Ultimo->prox = a;
	a->prox = NULL;
}

void inserirItemMatriz(ListaMatriz *L, int primeiro, int segundo, int v1, int v2) {
	PMatriz a = (PMatriz)malloc(sizeof(Matriz));
	ItemMatriz item;
	item.primeiro = primeiro;
	item.segundo = segundo;
	item.v1 = v1;
	item.v2 = v2;
	a->itemMatriz = item;

	inserirPonteiroMatriz(L,a);
}

void imprimirLista(ListaMatriz L)
{
	PMatriz aux = L.Primeiro->prox;
	while (aux != NULL)
	{
		printf("Primeiro %d, Valor: %d\n", aux->itemMatriz.primeiro, aux->itemMatriz.v1);
		printf("Segundo %d, Valor: %d\n", aux->itemMatriz.segundo, aux->itemMatriz.v2);
		aux = aux->prox;
	}
}

void liberaMatriz(ListaMatriz L)
{
   PMatriz p = L.Primeiro->prox;
   while (p != NULL) {
       PMatriz t = p->prox;
      free(p);
      p = t;
   }
}

